mod service;

use once_cell::sync::Lazy;
use tokio::sync::RwLock;

pub use service::*;
pub static SERVICEBOOK: Lazy<RwLock<ServiceBook>> = Lazy::new(|| RwLock::new(ServiceBook::new()));

pub fn add(left: usize, right: usize) -> usize {
    left + right
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn it_works() {
        let result = add(2, 2);
        assert_eq!(result, 4);
    }

    // #[tokio::test]
    // fn service_book_test() -> Result<(), Box<dyn std::error::Error>> {
    //     SERVICEBOOK.write().await.join_service(
    //         "test".into(),
    //         Service {
    //             host: "127.0.0.1".into(),
    //             port: 7878,
    //             name: "ZHRD".into(),
    //         },
    //     )?;

    //     let addr = SERVICEBOOK
    //         .write()
    //         .await
    //         .choose_service("test".into())
    //         .unwrap()
    //         .get_url();
    //     println!("{}", addr);
    // }
}
